function foo() {}

// 1. construction 属性
/* ===========================
 * foo对象上有一个constructor的属性，
 * =========================== */

// console.log(foo, foo.prototype.contructor);
// console.log(Object.getOwnPropertyDescriptors(foo.prototype));

//自定义属性
// foo.prototype.name = "张三";
// foo.prototype.age = 18;
// foo.prototype.sex = "男";

//直接修改整个prototype整个对象
foo.prototype = {
  constructor: foo,
  name: "张三",
  age: 18,
  sex: "男",
};
// 这样的话就会创建一个新对象，原来的prototype就会被覆盖， 所以就没有了constructor属性, 所以需要手动添加
let fn = new foo();
console.log(fn.name, fn.age, fn.sex);

//但是人家本来的constructor属性是不可枚举的，但是我们手动添加的是可枚举的
Object.defineProperty(foo.prototype, "constructor", {
  enumerable: false,
  writable: true,
  value: foo,
  configurable: true,
});
